home *** CD-ROM | disk | FTP | other *** search
/ Atari Forever 4 / Atari Forever 4.zip / Atari Forever 4.iso / SERIE_AI / AI_081 / CBHD501 / SRC / M2 / SCSIDISK.D < prev    next >
Text File  |  1998-03-14  |  5KB  |  157 lines

  1. DEFINITION MODULE ScsiDisk;
  2. (****************************************************************************
  3.  *
  4.  *
  5.  * $Source: E:\HM2\LIB\se\rcs\scsidisk.d,v $
  6.  *
  7.  * $Revision: 1.2 $
  8.  *
  9.  * $Author: S_Engel $
  10.  *
  11.  * $Date: 1996/02/03 19:31:46 $
  12.  *
  13.  * $State: Exp $
  14.  *
  15.  *****************************************************************************
  16.  * History:
  17.  *
  18.  * $Log: scsidisk.d,v $
  19.  * Revision 1.2  1996/02/03  19:31:46  S_Engel
  20.  * Kleine Anpassungen
  21.  *
  22.  * Revision 1.1  1995/11/13  17:38:26  S_Engel
  23.  * Initial revision
  24.  *
  25.  *
  26.  *
  27.  ****************************************************************************)
  28.  
  29.  
  30. FROM SYSTEM  IMPORT BYTE, ADDRESS, TSIZE;
  31.  
  32. IMPORT
  33.   Portab;
  34.  
  35.  
  36. TYPE
  37.   tDefectList = RECORD
  38.                   res : SHORTCARD;
  39.                   len : SHORTCARD;
  40.                   blocks : ARRAY[0..MAX(SHORTINT)] OF LONGCARD;
  41.                 END;
  42.  
  43. (*-----------------------------------------------------------------------
  44.  *
  45.  * Reassign Blocks.
  46.  *
  47.  * Buffer enthält die Defectliste
  48.  * count ist die Anzahl der Blocks!
  49.  *
  50.  *-----------------------------------------------------------------------*)
  51. PROCEDURE ReassignBlocks(Buffer : ADDRESS; count : SHORTCARD) : BOOLEAN;
  52.  
  53. PROCEDURE Read6(BlockAdr : LONGCARD;
  54.                 TransferLen : SHORTCARD; Adr : ADDRESS) : BOOLEAN;
  55.  
  56. PROCEDURE Read10(BlockAdr : LONGCARD;
  57.                  TransferLen : SHORTCARD; Adr : ADDRESS) : BOOLEAN;
  58.  
  59. PROCEDURE Write6(BlockAdr : LONGCARD;
  60.                  TransferLen : SHORTCARD; Adr : ADDRESS) : BOOLEAN;
  61.  
  62. PROCEDURE Write10(BlockAdr : LONGCARD;
  63.                   TransferLen : SHORTCARD; Adr : ADDRESS) : BOOLEAN;
  64.  
  65.  
  66. PROCEDURE Read(BlockAdr : LONGCARD;
  67.                TransferLen : SHORTCARD; ADR : ADDRESS) : BOOLEAN;
  68.   (*
  69.    * ReadCmd liest Datenblöcke ein
  70.    * Wenn nötig, wird ein langes Kommando (10 Byte, Class 1) verwendet.
  71.    *)
  72.  
  73. PROCEDURE Write(BlockAdr : LONGCARD;
  74.                 TransferLen : SHORTCARD; ADR : ADDRESS) : BOOLEAN;
  75.   (*
  76.    * WriteCmd speichert Datenblöcke ab.
  77.    * Wenn nötig, wird ein langes Kommando (10 Byte, Class 1) verwendet.
  78.    *)
  79.  
  80.  
  81. (*
  82.  *)
  83. PROCEDURE StartStop(LoadEject, StartFlag : BOOLEAN) : BOOLEAN;
  84.  
  85.  
  86. PROCEDURE Seek6(BlockAdr : LONGCARD) : BOOLEAN;
  87. PROCEDURE Seek10(BlockAdr : LONGCARD) : BOOLEAN;
  88.  
  89. PROCEDURE Seek(BlockAdr : LONGCARD) : BOOLEAN;
  90.  
  91.  
  92. PROCEDURE Format() : BOOLEAN;
  93.  
  94. (*-------------------------------------------------------------------------*)
  95. (*-                                                                       -*)
  96. (*- ReadCapacity fragt die Größe des Laufwerkes ab.                       -*)
  97. (*- Bei PMI = TRUE wird der nach BlockAdr nächste Block angegeben, der    -*)
  98. (*- noch ohne Verzögerung übertragen werden kann.                         -*)
  99. (*- Bei Platten kann dies der letzte PBlock auf dem gleichen Zylinder wie -*)
  100. (*- BlockAdr sein, bei CD-ROMs in etwa der letzte Block, der ohne         -*)
  101. (*- Geschwindigkeitsänderung übertragen werden kann.                      -*)
  102. (*- PMI=FALSE erfragt die absolute Größe des Gerätes.                     -*)
  103. (*- SCSI-Opcode $25                                                       -*)
  104. (*-                                                                       -*)
  105. (*-                                                                       -*)
  106. (*-------------------------------------------------------------------------*)
  107. PROCEDURE ReadCapacity(PMI : BOOLEAN; VAR BlockAdr, BlockLen : LONGCARD) : BOOLEAN;
  108.  
  109. (*-----------------------------------------------------------------------
  110.  *
  111.  * Defectliste erfragen
  112.  *
  113.  * Plist: Primary Defect List
  114.  * Glist: Grown Defect List
  115.  * Format: (s. SCSI-Norm FORMAT UNIT)
  116.  *     0  = BLOCK FORMAT                (das dürfte das interessante sein)
  117.  *   100b = BYTES FROM INDEX FORMAT
  118.  *   101b = PHYSICAL SECTOR FORMAT
  119.  *   110b = VENDOR SPECIFIC
  120.  *-----------------------------------------------------------------------*)
  121.  
  122. TYPE
  123.   tDefect0  = RECORD
  124.                 Block     : LONGCARD;
  125.               END;
  126.   tDefect4  = RECORD
  127.                 CylHead   : LONGCARD;  (* cyl, cyl, cyl, head *)
  128.                 FromIndex : LONGCARD;
  129.               END;
  130.   tDefect5  = RECORD
  131.                 CylHead   : LONGCARD;  (* cyl, cyl, cyl, head *)
  132.                 SecNo     : LONGCARD;
  133.               END;
  134.  
  135.   tDefectHead = RECORD
  136.                   res       : Portab.UChar;
  137.                   ListType  : BYTESET;
  138.                       (* 7..5: Reserved
  139.                        * 4 : Plist
  140.                        * 3 : Glist
  141.                        * 2..0: Defect list format
  142.                        *)
  143.                   Len       : SHORTCARD;
  144.                 END;
  145.  
  146.  
  147.  
  148.  
  149. PROCEDURE ReadDefectData(Buffer : ADDRESS;
  150.                          Plist, Glist : BOOLEAN;
  151.                          Format : SHORTCARD;
  152.                          Len : SHORTCARD) : BOOLEAN;
  153.  
  154.  
  155.  
  156. END ScsiDisk.
  157.